//package com.example.springbootzk.utils;
//
//import org.apache.zookeeper.*;
//import org.apache.zookeeper.data.ACL;
//import org.apache.zookeeper.data.Stat;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.PostConstruct;
//import java.io.IOException;
//import java.util.List;
//
///**
// * @description: zookeeper原生客户端的常用api
// * @author: ZZZ
// * @time: 2021/3/21 15:50
// */
//@Component
//public class ZKUtils {
//    @Value("${zk.url}")
//    private String url;
//
//    @Value("${zk.sessionTimeOut}")
//    private int sessionTimeOut;
//
//
//    private ZooKeeper zk;
//    private static boolean zkFalg = false;
//
//    @PostConstruct
//    private ZooKeeper init() {
//        if (!zkFalg) {
//            synchronized (ZKUtils.class) {
//                if (!zkFalg) {
//                    try {
//                        System.out.println("zk 初始化");
//                        zk = new ZooKeeper(url, sessionTimeOut, new Watcher() {
//                            @Override
//                            public void process(WatchedEvent event) {
//                                System.out.println("事件类型为：" + event.getType());
//                                System.out.println("事件发生的路径：" + event.getPath());
//                                System.out.println("通知状态为：" + event.getState());
//                            }
//                        });
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//        }
//        return zk;
//    }
//
//    //创建节点
//    public void createNode(String path, String value){
//        try {
//            zk.create(path, value.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//        } catch (KeeperException e) {
//            e.printStackTrace();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//    }
//
//    //获取数据
//    public String getData(String url) {
//        byte[] data = new byte[0];
//        try {
//            data = zk.getData(url, false, new Stat());
//        } catch (KeeperException e) {
//            e.printStackTrace();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//        String result = new String(data);
//        return result;
//    }
//
//    //获取子节点
//    public List<String> getChildren(String path)  {
//        List<String> nodeList = null;
//        try {
//            nodeList = zk.getChildren(path, false);
//        } catch (KeeperException e) {
//            e.printStackTrace();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//        return nodeList;
//    }
//
//    //获取客户端状态
//    public String getStates() {
//        ZooKeeper.States states = zk.getState();
//        return "zookeeper states:" + states;
//    }
//
//    //获取节点权限
//    public List<ACL> getStates(String url) {
//        List<ACL> aclList = null;
//        try {
//            aclList = zk.getACL(url, new Stat());
//        } catch (KeeperException e) {
//            e.printStackTrace();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//        return aclList;
//    }
//
//    //修改节点数据
//    public void setData(String path, String value)  {
//        try {
//            zk.setData(path,value.getBytes(),-1);
//        } catch (KeeperException e) {
//            e.printStackTrace();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//    }
//
//    //删除节点
//    public String delete(String path) {
//        try {
//            zk.delete(path, -1);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        } catch (KeeperException e) {
//            e.printStackTrace();
//        }
//        return "delete success";
//    }
//
//
//}
